package com.tyae.dao;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Restrictions;

import com.tyae.bean.Comarca;
import com.tyae.bean.Empresa;

public class ComarcaDAOHibernate implements ComarcaDAO {

	HibernateDAOFactory hibernateDAOFactory = null;
	HibernateDAO<Comarca> hibernateDAO = null;

	public ComarcaDAOHibernate() {
		hibernateDAOFactory = new HibernateDAOFactory();
		hibernateDAO = hibernateDAOFactory.getComarcaDAO();
	}
	
	@Override
	public boolean inserir(Comarca comarca) throws Exception {
		boolean ok = false;

		try {
			hibernateDAO.add(comarca);
			ok = true;
		} catch (Exception e) {
			throw new Exception(e.getMessage());
		} 
		return ok;
	}

	@Override
	public boolean alterar(Comarca comarca) throws Exception {
		boolean ok = false;

		try {
			hibernateDAO.update(comarca);
			ok = true;
		} catch (Exception e) {
			throw new Exception(e.getMessage());
		}

		return ok;
	}

	@Override
	public boolean excluir(Comarca comarca) throws Exception {
		boolean ok = false;

		try {
			hibernateDAO.remove(comarca);
			ok = true;
		} catch (Exception e) {
			throw new Exception(e.getMessage());
		} 

		return ok;
	}
	
	@SuppressWarnings("unchecked")
	@Override
	public List<Comarca> getSelecionar(String descricao) {
	    
		Criteria criteria = hibernateDAO.getSession().createCriteria(Empresa.class);
	    criteria.add(Restrictions.like("descricao",descricao,MatchMode.ANYWHERE));
	    List<Comarca> lista = criteria.list();	
 
		
		return lista;
	}	

	@Override
	public Comarca getComarca(int codigoComarca) {
		return hibernateDAO.get(codigoComarca);
	}

	@Override
	public List<Comarca> getListarTodos() {
		return hibernateDAO.listAll();
	}
	
	@Override
	public boolean isExiste(Comarca comarca) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean isExclusaoLiberada(Comarca comarca) {
		// TODO Auto-generated method stub
		return false;
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<Comarca> getSelecionar(String descricao, int empresa) {
		
		/*
		Criteria criteria = hibernateDAO.getSession().createCriteria(Comarca.class);
	    criteria.add(Restrictions.like("descricao",descricao,MatchMode.ANYWHERE));
	    criteria.add(Restrictions.eq("codigoEmpresa", empresa));
	    List<Comarca> lista = criteria.list();	
 */
		
		String 	sql = "FROM Comarca as comarca WHERE comarca.codigoComarca <> 0";

		if (!(descricao.isEmpty())) {
			sql += " AND comarca.descricao like '" + descricao + "%' ";  
		}
		
		sql += " AND comarca.empresa = "+empresa;
		sql += " ORDER BY comarca.descricao";		
 
		List<Comarca> lista = hibernateDAO.getSession().createQuery(sql).list();
		
		return lista;	
	}	

}
